
        <html>
			<head>
			     <title>OSX 攻击框架Empyre简介 - Evi1cg</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/tools/15795">http://drops.wooyun.org/tools/15795</a></h1>
				
      <p>
        <h1>0x00 简介</h1>

<hr />

<p>随着OSX使用者越来越多，针对OSX的攻击也越来越多。前不久，Empire团队又推出一个新的攻击框架，针对于OSX的攻击框架<a href="https://github.com/adaptivethreat/EmPyre">Empyre</a>，此框架由Python建立在密码学基础上编写，使用过<a href="https://github.com/PowerShellEmpire/Empire">Empire</a>的同学对此框架应该能很快上手，此文将对Empyre框架的使用方式做一下简单的的介绍。</p>

<!--more-->

<h1>0x01 安装</h1>

<hr />

<p>使用如下命令进行安装：</p>

<pre><code>#!bash
☁  Desktop  git clone https://github.com/adaptivethreat/EmPyre 
☁  Desktop  cd EmPyre/setup
☁  setup [master] ./install.sh
</code></pre>

<blockquote>
  <p>安装脚本会安装一些依赖库，并且最后执行setup_database.py 进行各项设置，可以手工修改。setup目录下的reset.sh脚本可以对EmPyre进行重置。</p>
</blockquote>

<h1>0x02 使用</h1>

<hr />

<p>进入主目录，执行</p>

<pre><code>#!bash
☁  EmPyre [master] python empyre
</code></pre>

<p>则可进入主菜单</p>

<p><img src="http://static.wooyun.org//drops/20160514/2016051414331673369117.png" alt="Alt text" /></p>

<blockquote>
  <p>现在已经包含了43个可使用的模块</p>
</blockquote>

<h3>Listeners</h3>

<p>要使用此框架，首先需要创建Listeners，直接输入listeners则可进去Listeners的配置页面，输入help，可以查看帮助，info命令可以查看详细的配置信息，下面截图是一个简单的Listeners配置。</p>

<p><img src="http://static.wooyun.org//drops/20160514/2016051414332113208215.png" alt="Alt text" /></p>

<p>配置监听的ip及端口需要设置Host</p>

<pre><code>#!bash
set Host http://192.168.74.141:8080
</code></pre>

<p>之后执行</p>

<pre><code>#!bash
(EmPyre: listeners) &gt; execute
</code></pre>

<p>可以开启监听，使用list可以查看开启的listener</p>

<p><img src="http://static.wooyun.org//drops/20160514/201605141433249433338.png" alt="Alt text" /></p>

<p>如果需要配置HTTPS的listener，需要配置CertPath</p>

<pre><code>#!bash
set CertPath ./data/empyre.pem
</code></pre>

<h3>Stagers</h3>

<p>创建好Listeners之后，需要配置Stagers ，Stagers 存放在./lib/stagers 目录下，现在已有的stagers如下：</p>

<p><img src="http://static.wooyun.org//drops/20160514/201605141433264142948.png" alt="Alt text" /></p>

<p>在listeners下输入usestager+空格之后按TAB键则可看到这些可用的stagers。现在可用的stagers 分别为：</p>

<ul>
<li><code>applescript</code>: 生成<a href="http://baike.baidu.com/link?url=zsL0NIp8nLJgYPF49Fyjveo9VjaaM71GXpv-Y_hVerLyubu_5FIj8UiFnpc_sn5LXLLAoae6Mu94mFEgCuue5a">AppleScript</a>的payload。</li>
<li><code>dylib</code>: 生成动态库类型的payload。（怎么使用请看<a href="http://qvb3d.iteye.com/blog/1176920">这里</a>）</li>
<li><code>hop_php</code>: 生成php类型的payload。</li>
<li><code>launcher</code>: 生成一行python代码作为payload。</li>
<li><code>macho</code>: 生成macho类型的payload(OSX可执行文件)。</li>
<li><code>macro</code>: 生成MAC Office宏。</li>
<li><code>safari_launcher</code>: 生成一个HTML文件作为payload。(诱使用户运行applescript)</li>
<li><code>war</code>: 生成war类型的payload。</li>
</ul>

<p>launcher为生成一行代码，被攻击者运行代码则被攻击者控制，下面使用macro以及safari_launcher两个好玩儿的方式来做一下示例：</p>

<p><strong>1、macro</strong></p>

<p>使用方式如下图：</p>

<p><img src="http://static.wooyun.org//drops/20160514/201605141433319441958.png" alt="Alt text" /></p>

<p>生成宏代码，创建任意office文件。打开宏设置</p>

<p><img src="http://static.wooyun.org//drops/20160514/201605141433334664668.png" alt="Alt text" /></p>

<p>将宏代码写入：</p>

<p><img src="http://static.wooyun.org//drops/20160514/201605141433367083677.png" alt="Alt text" /></p>

<p>之后再次打开此work会有如下提示：</p>

<p><img src="http://static.wooyun.org//drops/20160514/201605141433386719085.png" alt="Alt text" /></p>

<p>点击启用宏，执行代码，受害者被控制：</p>

<p><img src="http://static.wooyun.org//drops/20160514/201605141433408820795.png" alt="Alt text" /></p>

<p><strong>2、safari_launcher</strong></p>

<p>使用方式如下：</p>

<p><img src="http://static.wooyun.org//drops/20160514/2016051414334657268105.png" alt="Alt text" /></p>

<p>将生成的html代码保存到test.html，放到web服务器上，可以看到代码中的<code>applescript</code> 则为要执行的applescript代码。访问此页面如下图：</p>

<p><img src="http://static.wooyun.org//drops/20160514/2016051414334937178118.png" alt="Alt text" /></p>

<p>按<code>Command+R</code>键以后，弹出如下页面：</p>

<p><img src="http://static.wooyun.org//drops/20160514/2016051414335138218125.png" alt="Alt text" /></p>

<p>点击新脚本，打开脚本编辑器，代码藏在最下面：</p>

<p><img src="http://static.wooyun.org//drops/20160514/2016051414335381478135.png" alt="Alt text" /></p>

<p>一旦点击三角符号的运行按钮，则受害者被控制：</p>

<p><img src="http://static.wooyun.org//drops/20160514/2016051414335859291144.png" alt="Alt text" /></p>

<blockquote>
  <p>其他的就不多介绍了，有兴趣的可以自己尝试一下</p>
</blockquote>

<h3>agents</h3>

<p><strong>1、基础使用</strong></p>

<p>获取agents怎么使用呢，首先可以查看help:</p>

<p><img src="http://static.wooyun.org//drops/20160514/2016051414340281518154.png" alt="Alt text" /></p>

<p>命令比较简单，要切换到一个agent,使用如下命令即可：</p>

<pre><code>#!bash
interact PI5M01QWZ4TJAUQA
</code></pre>

<p>如果觉得名字不好记，可以执行如下命令对agnet进行重命名：</p>

<p><img src="http://static.wooyun.org//drops/20160514/2016051414340463609162.png" alt="Alt text" /></p>

<p>切换到agent里面之后，可以help查看可执行的命令:</p>

<p><img src="http://static.wooyun.org//drops/20160514/2016051414340743404173.png" alt="Alt text" /></p>

<p>如果要执行系统命令，可使用shell来执行：</p>

<p><img src="http://static.wooyun.org//drops/20160514/2016051414340934988183.png" alt="Alt text" /></p>

<p><strong>2、模块使用</strong></p>

<p>Empyre提供了多个可使用模块，输入usemodule空格之后按TAB键则可列出当前可使用的模块，如下图：</p>

<p><img src="http://static.wooyun.org//drops/20160514/2016051414341370599192.png" alt="Alt text" /></p>

<p>包括信息搜集，权限提升，维持权限等多个模块，这里就不一一介绍了，介绍几个比较好玩儿的：</p>

<p><em>collection/osx/prompt</em>:</p>

<blockquote>
  <p>此模块可通过社会工程学获取当前用户所用的密码。</p>
</blockquote>

<p><img src="http://static.wooyun.org//drops/20160514/2016051414341766081202.png" alt="Alt text" /></p>

<p>运行以后，会打开AppStore，并询问密码，如下图：</p>

<p><img src="http://static.wooyun.org//drops/20160514/2016051414342068312216.png" alt="Alt text" /></p>

<p>当用户输入密码以后，我们就获取到了他输入的密码：</p>

<p><img src="http://static.wooyun.org//drops/20160514/2016051414342155325223.png" alt="Alt text" /></p>

<p><em>collection/osx/webcam</em>:</p>

<blockquote>
  <p>此模块可进行摄像头拍照</p>
</blockquote>

<p><img src="http://static.wooyun.org//drops/20160514/2016051414342420348233.png" alt="Alt text" /></p>

<p><em>collection/osx/browser_dum</em>：</p>

<blockquote>
  <p>此模块可获取浏览器历史记录</p>
</blockquote>

<p><img src="http://static.wooyun.org//drops/20160514/2016051414343333075242.png" alt="Alt text" /></p>

<p><em>privesc/multi/sudo_spawn</em></p>

<blockquote>
  <p>此模块可用于权限提升</p>
</blockquote>

<p>首先创建一个新的Listener：</p>

<p><img src="http://static.wooyun.org//drops/20160514/2016051414343696743252.png" alt="Alt text" /></p>

<p>切换到agent以后，使用此模块：</p>

<p><img src="http://static.wooyun.org//drops/20160514/2016051414343958652262.png" alt="Alt text" /></p>

<p>可以看到输入密码以后（密码可以通过prompt模块或者信息搜集获得），获取了一个新的agent，并且此agent获取了最高的权限，如下图：</p>

<p><img src="http://static.wooyun.org//drops/20160514/2016051414344334137271.png" alt="Alt text" /></p>

<p>其他模块，我这里就不一一介绍了，有兴趣的小伙伴可以自己去尝试一下，而且维持权限的模块已经有4个了，还是很给力的。</p>

<h1>0x03 小结</h1>

<hr />

<p>看到这个工具还是挺开心的，本文仅仅是对此工具进行了一个简单的使用介绍，有兴趣的可以看一下源码然后自己编写自己所需要的模块或功能，希望此文对你能有所帮助。</p>

<p><strong>本文由Evi1cg原创并首发于乌云drops，转载请注明</strong></p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          